package cn.edu.dlmu.cogo.register;

import java.util.List;

/**
 * @author hongda.li@hand-china.com 2022/3/10 17:53
 */
public interface RegisterCenter {

    /**
     * 注册服务
     * @param instance 服务实例
     * @return 是否注册成功
     */
    boolean register(ServiceInstance instance);

    /**
     * 根据服务名称获取服务
     * @param serviceName 服务名称
     * @return 服务实例
     */
    ServiceInstance getService(String serviceName);

    /**
     * 获取服务列表
     * @return 服务列表
     */
    List<ServiceInstance> getServiceList();

    /**
     * 根据服务名称判断服务是否可用
     * @param serviceName 服务名称
     * @return 是否可用
     */
    boolean enabled(String serviceName);

    /**
     * 对某个微服务续约
     * @param serviceName 微服务名称
     * @return 是否续约成功
     */
    boolean renewService(String serviceName);

    /**
     * 移除某个微服务
     * @param serviceName 微服务名称
     */
    void removeService(String serviceName);

    /**
     * 禁用某个微服务
     * @param serviceName 微服务名称
     */
    void disableService(String serviceName);

    /**
     * 启用某个微服务
     * @param serviceName 微服务名称
     * @return 是否启用成功
     */
    boolean enableService(String serviceName);
}
